import axios from 'axios'
import webMap from "./map.web"
// 鉴权过就不需要再鉴权了
let workWxConfiged = false

// 企业微信环境中定位:https://work.weixin.qq.com/api/doc/90000/90136/94313

function uploadWorkWxErr(params){
  console.log('uploadWorkWxErr',params)
  window.mconsole && window.mconsole.upError(JSON.stringify(params))
  window.mconsole && window.mconsole.upYueYing('企业微信地图授权异常',params,145)
}
class Location_workwx {
  getAddress(callback) {
    if (!window.wx) {
      new webMap().getAddress(callback)
      // callback({code: -1, msg: '环境初始化异常'})
      return
    }
    // wx.checkJsApi({
    //   jsApiList: ['getLocation'], // 需要检测的JS接口列表
    //   success: function(res) {
    //     console.log('wx.checkJsApi', res)
    //     // 以键值对的形式返回，可用的api值true，不可用为false
    //     // 如：{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
    //   }
    // });
    let corpCode = sessionStorage.getItem('qy_corp')
    if (!corpCode) {
      callback({code: -1, msg: '暂无飞书定义编码'})
      uploadWorkWxErr({code: -1, msg: '暂无飞书定义编码'})
      return
    }
    if (workWxConfiged) {
      this.getLocation(callback)
      return
    }
    axios.get('/auth/getAuthConfig.json', {
      params: {
        corp: corpCode,
        url: location.href.split('#')[0],
        client: 'qywx'
      }
    }).then(res => {
      let rs = res.data
      let data = rs.data
      if (rs.code != '0' || !data || !data.signature) {
        uploadWorkWxErr( Object.assign({},{code: -1, msg: '无法获得鉴权信息'},data) )
        callback({code: -1, msg: '无法获得鉴权信息'})
        return
      }
      wx.agentConfig({
        corpid: data.corpId, // 必填，企业微信的corpid，必须与当前登录的企业一致
        agentid: data.agentId, // 必填，企业微信的应用id （e.g. 1000247）
        timestamp: data.timeStamp, // 必填，生成签名的时间戳
        nonceStr: data.nonceStr, // 必填，生成签名的随机串
        signature: data.signature,// 必填，签名，见附录-JS-SDK使用权限签名算法
        jsApiList: ['getLocation'], //必填，传入需要使用的接口名称
        success: res => {
          this.getLocation(callback)
          // if (res.err_Info == 'success' && res.checkResult.geoLocation) {
          //   workWxConfiged = true
          //   this.getLocation(callback)
          // } else {
          //   alert(JSON.stringify(res))
          //   callback({code: '-1', msg: '鉴权失败'})
          // }
        },
        fail: res => {
          uploadWorkWxErr( Object.assign({},res) )
          if (res.errMsg.indexOf('function not exist') > -1) {
            alert('版本过低请升级')
          } else {
            alert(JSON.stringify(res))
          }
        }
      });
    }).catch(err=>{
      uploadWorkWxErr( JSON.stringify(err) )
    })
  }
  getLocation(callback) {
    wx.getLocation({
      type: 'gcj02', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
      success: function (data) {
        // workWxConfiged = true
        // var latitude = res.latitude; // 纬度，浮点数，范围为90 ~ -90
        // var longitude = res.longitude; // 经度，浮点数，范围为180 ~ -180。
        // var speed = res.speed; // 速度，以米/每秒计
        // var accuracy = res.accuracy; // 位置精度
        data.from = 3
        Promise.resolve(data).then(webMap.geoconv).then(webMap.geocoder).then(res => {
          if (res.status && res.status === 0) {
            const ret = res.result
            const transPoint = gcoord.transform([ret.location.lng, ret.location.lat], gcoord.BD09, gcoord.GCJ02);
            callback({
              province: ret.addressComponent.province,
              city: ret.addressComponent.city,
              district: ret.addressComponent.district,
              address: ret.formatted_address,
              lon: transPoint[0],
              lat: transPoint[1]
            })
          }else{
            // 第三方私有化部署,不要忘记配置百度地图域名白名单!!!
            console.error('workwx获取位置出错!')
          }
        })
      },
      fail: function (errorMsg) {
        // alert(JSON.stringify(errorMsg))
        console.log(errorMsg && errorMsg.message || 'error');
        callback({code: -2, msg: '网络异常，无法获取当前位置'})
      }
    })
  }
}
export default Location_workwx
